<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="stylesheet" href="styles.css">
  <script type="text/javascript" src="config.js"></script>
</head>

<body>
  <h1 class="h">3. 基础绘图</h1>
  <p>我们将使用 Seaborn 的内置数据集进行可视化。</p>
  <pre><code># 加载内置数据集
tips = sns.load_dataset("tips")
print(tips.head())</code></pre>
  <dl>
    <dt>1. 关系图 - sns.scatterplot()</dt>
    <dd>
      用于展示两个数值变量之间的关系。
      <pre><code># 基础散点图
plt.figure(figsize=(8, 6))
ax = sns.scatterplot(data=tips, x="total_bill", y="tip")
plt.show()

# 添加第三个维度：分类变量（用颜色 hue、样式 style、大小 size）
plt.figure(figsize=(8, 6))
ax = sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="smoker", size="size")
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left') # 处理图例位置，避免遮挡图形
plt.show()</code></pre>
    </dd>
    <dt>2. 分布图 - sns.histplot(), sns.kdeplot()</dt>
    <dd>
      用于展示单个变量的分布。
      <pre><code># 直方图
plt.figure(figsize=(8, 6))
ax = sns.histplot(data=tips, x="total_bill", kde=True) # kde=True 会同时绘制密度曲线
plt.show()

# 核密度估计图 (KDE)
plt.figure(figsize=(8, 6))
ax = sns.kdeplot(data=tips, x="total_bill", hue="time", fill=True) # fill 填充颜色
plt.show()

# 二元分布图（2D KDE）
plt.figure(figsize=(8, 6))
ax = sns.kdeplot(data=tips, x="total_bill", y="tip", fill=True, cmap="Reds")
plt.show()</code></pre>
    </dd>
    <dt>3. 分类图 - sns.boxplot(), sns.violinplot(), sns.barplot()</dt>
    <dd>
      用于比较不同类别之间的数值分布。
      <pre><code># 箱线图
plt.figure(figsize=(8, 6))
ax = sns.boxplot(data=tips, x="day", y="total_bill", hue="smoker")
plt.show()

# 小提琴图（箱线图 + KDE）
plt.figure(figsize=(8, 6))
ax = sns.violinplot(data=tips, x="day", y="total_bill", hue="smoker", split=True) # split 让hue的两个类别拼成一个小提琴
plt.show()

# 条形图（默认显示平均值和置信区间）
plt.figure(figsize=(8, 6))
ax = sns.barplot(data=tips, x="day", y="total_bill", hue="sex", estimator=np.mean, errorbar=None) # errorbar=None 移除误差线
# estimator 可以换为 len, std, median 等
plt.show()</code></pre>
    </dd>
  </dl>
</body>

</html>